约瑟夫环问题
- 问题描述
- 数据结构设置
- 过程代码
问题描述
n个小朋友做成一圈,编号分别是分别为1-n,2号小朋友坐在1号小朋友顺时针方向,3号小朋友坐在2号小朋友顺时针方向……1号小朋友坐在n号小朋友顺时针方向;对于给定输入n、k,从第一位小朋友开始报数,第一位小朋友报数为1,下面的小朋友每次报数增加1,当某一位小朋友报数报到k的整数倍或者报的数的个位数为k时,该小朋友被淘汰出局。最终剩下一位小朋友,该小朋友为获胜者。
输入:n、k
输出:获胜的小朋友的编号
利用数据结构来简化问题
分析问题,需要存储的是小朋友的编号、小朋友的状态(是否淘汰出局)、小朋友的报数,环状结构则通过进行mod n实现。
因此选择结构体数组来进行数据的存储。
结构体设置
struct Item{
int id;
int num;